package com.carboy.launch.utils;

import java.net.URLEncoder;
import java.nio.ByteBuffer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/***
 * 
 * 字符串和处理
 * 
 * @author James
 * @deprecated 2015-6-16
 * 
 */
public class StringUtils {

	/**
	 * 字符串是否为空
	 * 
	 * @param object
	 * 
	 * @return
	 */
	public static boolean isValidString(String str) {
		if (null != str && !"".equals(str.trim())) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 
	 * 字符串是否是纯数字
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNumeric(String str) {
		Pattern pattern = Pattern.compile("[0-9]*");
		return pattern.matcher(str).matches();
	}

	/**
	 * 
	 * @param length
	 * @param value
	 * @return
	 */
	public static String subStr(int length, String value) {
		String testValue = null;
		if (value.length() > length) {
			testValue = value.substring(0, length) + "..";
		} else {
			testValue = value;
		}
		return testValue;
	}

	/**
	 * 过滤标点符号
	 * 
	 * @param str
	 * @return
	 */
	public static String deleteSymbol(String str) {

		String result = "";
		try {
			String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]";
			Pattern p = Pattern.compile(regEx);
			Matcher m = p.matcher(str);
			result = m.replaceAll("").trim();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	/**
	 * int 转字节
	 * 
	 * @param aint
	 * @return
	 */
	public static byte[] getBytes(int aint) {

		byte[] bytes = ByteBuffer.allocate(4).putInt(aint).array();
		byte tmp = bytes[0];
		bytes[0] = bytes[3];
		bytes[3] = tmp;

		tmp = bytes[1];
		bytes[1] = bytes[2];
		bytes[2] = tmp;

		return bytes;
	}

	/***
	 * 转成2个字节
	 * 
	 * @param sh
	 * @return
	 */
	public static byte[] getBytes2(short sh) {
		byte[] bytes = ByteBuffer.allocate(2).putShort(sh).array();

		byte tmp = bytes[0];
		bytes[0] = bytes[1];
		bytes[1] = tmp;

		return bytes;
	}

	/***
	 * 判断语音中是否包含退出命令
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isExit(String str) {
		if (str.equals("退出。") || str.equals("再见。") || str.equals("取消。")
				|| str.equals("退出吧！") || str.equals("再见吧！")
				|| str.equals("取消吧！")) {
			return true;
		}
		return false;
	}

	/***
	 * 判断语音中是否包含退出命令
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isExit2(String str) {
		if (str.equals("退出") || str.equals("再见") || str.equals("取消")
				|| str.equals("退出吧") || str.equals("再见吧") || str.equals("取消吧")) {
			return true;
		}
		return false;
	}

	/***
	 * 判断语音中是否包含阿宝
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isSayABao(String str) {
		if (str.contains("阿宝")) {
			return true;
		}
		return false;
	}

	/**
	 * 截取字符串数字部分
	 * 
	 * @param content
	 * @return
	 */
	public static String getNumbers(String content) {
		Pattern pattern = Pattern.compile("\\d+");
		Matcher matcher = pattern.matcher(content);
		while (matcher.find()) {
			return matcher.group(0);
		}
		return "";
	}

	/***
	 * 返回当前str在整个字符串的位置
	 * 
	 * @param text
	 *            整个字符串
	 * @param str
	 *            “查”等关键词
	 * @return
	 */
	public static int getIndexStr(String text, String str) {
		if (text.contains(text)) {
			return text.indexOf(str);
		}
		return -1;
	}

	/***
	 * 去掉字符串中的text部分
	 * 
	 * @param text
	 * @return
	 */
	public static String deleteStrFromAllText(String text) {

		try {
			StringBuffer sb = new StringBuffer();
			if (text.contains("周边")) {
				int index1 = getIndexStr(text, "周边");
				sb.append(text.substring(0, index1));
				sb.append(text.substring(index1 + 2, text.length()));
				return sb.toString();
			}
			if (text.contains("附近")) {
				int index1 = getIndexStr(text, "附近");
				sb.append(text.substring(0, index1));
				sb.append(text.substring(index1 + 2, text.length()));
				return sb.toString();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return text;

	}

	/**
	 * 城市去掉"市"
	 * 
	 * @param city
	 * @return
	 */
	public static String getCity(String city) {
		String c = null;
		if (isValidString(city)) {
			if (city.contains("市")) {
				c = city.substring(0, city.length() - 1);
			}
		}
		return c;

	}

	/**
	 * 
	 * @author james
	 * @Description 美食 取消大众点评不识别的参数，如 川菜馆，取消馆
	 * @param category
	 *            川菜馆
	 * @return 返回川菜
	 */
	public static String getNewCategory(String category) {
		String c = null;
		if (isValidString(category)) {
			if (category.contains("馆") || category.contains("厅")) {
				c = category.substring(0, category.length() - 1);
				return c;
			}
		}
		return category;
	}

	/**
	 * 
	 * @author James
	 * @Description 中文转换成utf-8
	 * @param str
	 * @return
	 */
	public static String getUTFStr(String str) {
		try {
			return URLEncoder.encode(str);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 
	 * @author James
	 * @Description 解析音乐url
	 * @param url
	 * @return
	 */
	public static String getMusicDownLoadHost(String url) {

		int index = url.lastIndexOf("/");
		url = url.substring(0, index + 1);

		return url;
	}

	/**
	 * 
	 * @author James
	 * @Description 获取DVR拍照返回的path
	 * @param path
	 * @return
	 */
	public static String[] getPicPath(String path) {
		String[] str = path.split(",");
		return str;
	}

	/**
	 * 
	 * @author James
	 * @Description 过滤语音播报可能会多音字误读的字段
	 * @param content
	 * @return!!!暂时不用！！！
	 */
	public static String doFilterErrorText(String content) {

		return null;
	}
}
